// pages/shoplist/shoplist.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    query: {}, // 跳转的时候传递
    shopList: [], // 店铺列表
    page: 1, // 页码
    pageSize: 10, // 每页数据大小
    isLoading: false, // 页面请求数据状态
    total: 0, // 当前查询条件的总数
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    console.log(options)
    // 把传递过来的参数设置为页面的状态
    this.setData({
      query: options
    })
    // 动态设置页面导入title
    wx.setNavigationBarTitle({
      title: options.name,
    })

    // 请求店铺列表页面数据
    this.getShopList()
  },

  // 请求店铺列表页面数据
  getShopList(cb){
    // 数据请求开始,显示loading
    wx.showLoading({
      title: '数据加载中...',
    })
    this.setData({
      isLoading: true
    })
    wx.request({
      url: `https://applet-base-api-t.itheima.net/categories/${this.data.query.id}/shops`,
      method: 'GET',
      // 请求参数
      data: {
        _page: this.data.page,
        _limit: this.data.pageSize
      },
      // 获取响应数据局
      success: (res) => {
        console.log('shoplist' , res)
        // 设置到页面中data
        this.setData({
          shopList: [...this.data.shopList, ...res.data], // 列表
          total: parseInt(res.header['X-Total-Count'])
        })
      }, 
      // complete 不管请求成功还是失败，都要走
      complete: () => {
        // 关闭loading提示
        wx.hideLoading()
        this.setData({
          isLoading: false
        })

        // 完成以后的清理操作
        cb && cb()
      }
    })
  },



  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    // 重置请求参数
    this.setData({
      page: 1,
      shopList: [],
      pageSize: 10, // 每页数据大小
      isLoading: false, // 页面请求数据状态
      total: 0, // 当前查询条件的总数
    })
    // 发起请求
    this.getShopList(() => {
      wx.stopPullDownRefresh()
    })
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    // 下拉触底请求更多数据
    // 有条件了：只有请求数据返回以后，触底后才继续发送请求
    if(this.data.isLoading) return
    // 数据是否加载完毕的判断
    if(this.data.total === this.data.shopList.length) {
      return wx.showToast({
        title: '数据已经加载完毕',
        icon: 'none'
      })
    }

    // 改变请求参数
    this.setData({
      page: this.data.page + 1
    })
    // 发起请求
    this.getShopList()
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})